home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 6 / Night Owl's Shareware - PDSI-006 - Night Owl Corp (1990).iso / 001a / rbcomm32.zip / RBCOMM.DOC < prev    next >
Text File  |  1990-07-29  |  76KB  |  1,824 lines

  1. RBcomm v3.21    Copyright (c) 1989, 1990 Ralf Brown
  2.  
  3. You may redistribute this program provided that you provide unmodified
  4. copies of all files, and do not charge any fee for making the copy.
  5.  
  6. RBcomm is a lean and mean comm program which will run in 41K without file
  7. transfer capability or 65K with file transfer and shell-to-DOS capability.
  8. Since it is so lean, you will not get a lot of the fancy features of other
  9. comm programs, though there are plenty of features to let you get your work
  10. done (I've been using it exclusively for over two years, and have added
  11. features as I've found that I could be more productive with them than
  12. without).
  13.  
  14. Features:
  15.     small (runs in as little as 41K [65K with DSZ, 66K with Puma])
  16.         DESQview-aware
  17.         pop-up menus
  18.     seamless file transfer using DSZ, PCZ, or Puma
  19.     Zmodem and Puma autodownload (others easily added)
  20.         shell to DOS, using less than 1K while shelled
  21.         keyboard reassignment, powerful keystroke macros
  22.         20-number dialing directory
  23.     ANSI/VT102, VT52, and AVATAR level 0 terminal emulations
  24.         132-column support
  25.     supports the 16550A FIFOs
  26.  
  27. Registration:
  28.     Continued use of DSZ requires registration with Omen Technology, Inc.
  29.     See the DSZ documentation for details.
  30.  
  31.         If you like RBcomm, send me a picture postcard of some sight in your
  32.     area.  If you don't like RBcomm, feel free to send me a postcard
  33.     anyway, telling me what you don't like.
  34.  
  35. Support:
  36.     none (after all, I'm not getting any money for this).  I will try to
  37.     fix bugs as time allows.
  38.  
  39. DISCLAIMER:  This software is distributed AS IS.  The author disclaims all
  40.     responsibility for any damages which might be incurred as the result
  41.         of using the program.  The software is not guaranteed to work on any
  42.         system other than the author's own.
  43.  
  44.  
  45.         Ralf Brown
  46.     School of Computer Science
  47.         Carnegie Mellon University
  48.         Pittsburgh, PA 15213
  49.  
  50.     ARPA: ralf@cs.cmu.edu
  51.     UUCP: {harvard,ucbvax,uunet}!cs.cmu.edu!ralf
  52.     BIT:  ralf%cs.cmu.edu@cmuccvma
  53.     FIDO: Ralf Brown 1:129/3.1
  54.  
  55. Files in distribution:
  56.         RBCOMM.DOC      this file
  57.         COMM.COM        the RBcomm main program
  58.         RBCONFIG.COM    the configuration program
  59.     MACRO.COM    the keyboard macro compiler/decompiler
  60.         R?-PIF.DVP      DESQview program information files
  61.     *.MAC        keyboard macro definition sources
  62.         *.RBM           keyboard macro definition files
  63.     *.HLP        help screens for corresponding macro files
  64.  
  65. Availability:
  66.     The newest version is always available on:
  67.        Doctor's WOC Inn  1:129/53  File Requests
  68.        (412)881-7757
  69.        24 hours, USR HST 9600
  70.  
  71.        NorthStar Pitt 1:129/81 (same computer, different modem)
  72.        (412)881-1749
  73.        1200/2400
  74.  
  75.        CS.CMU.EDU [128.2.222.173]
  76.        directory /afs/cs.cmu.edu/user/ralf/pub
  77.        You must change directly to this directory due to the way our
  78.          anonymous FTP works.
  79.  
  80.     New versions will also be available here within a few days of release:
  81.        Rosedale Dataline
  82.        (301)866-4554
  83.        24 hours, USR HST 9600
  84.        TP Board
  85.  
  86.        Fidonet nodes participating in DVNet
  87.  
  88.        WSMR-SIMTEL20.ARMY.MIL [26.2.0.4]
  89.        directory PD:<MSDOS2.MODEM>
  90.  
  91. System Requirements:
  92.        at least 41K free memory (65K for file transfers)
  93.        one or more serial ports
  94.        DOS 2.0 or higher
  95.        64K disk space for swap file
  96.  
  97. -------------------------------------------------------------------------------
  98. Installation
  99. ------------
  100.  
  101. Before you use RBcomm for the first time, you need to tell it where to find
  102. its support files and how to talk to the modem.  To do so, copy the RBcomm
  103. files to the directory in which you wish to install them, change to that
  104. directory, and type
  105.  
  106.         RBCONFIG COMM.COM
  107.  
  108. (if COMM.COM is not in the current directory, use the full path, i.e.
  109. C:\COMM\COMM.COM, or RBCONFIG will not be able to find it)
  110.  
  111. Please do not use your original copy.  If you forget to run RBCONFIG, you
  112. will be told to do so when you attempt to run COMM.COM.
  113.  
  114. You will now be asked (via a menu) to fill in several groups of information.
  115.  
  116. Press 'D' to set the directories and extensions to use.
  117.    RBcomm dir:  where the keyboard macro files and dialing directory are stored
  118.    Swap directory: where to store the swap file when running DSZ or COMMAND.COM
  119.         a RAMdisk is ideal for storing the swap file
  120.    Macro file extension:  default extension to apply to keyboard macro files
  121.    Default macro file:    keyboard macro file to load on startup and hangup
  122.         if this file does not exist, RBcomm will use a built-in set
  123.         of default key bindings
  124.  
  125. Press 'S' to select the serial port to use.  You may setup
  126. configurations for "COM1" through "COM4", as well as the default port to
  127. use when not otherwise indicated in the dialing directory. The values
  128. given for "COM3" and "COM4" need not bear any relationship to the
  129. numbering of the actual serial ports in your system (you could, for
  130. example, set them up to be the same as "COM1" except for the length of
  131. the break signal).  RBCOMM does check that "COM1" and "COM2" exist
  132. according to the BIOS data area, however, to avoid running in a DESQview
  133. window which has incorrect settings for supporting serial
  134. communications.  You may specify a separate setup string for each port.
  135. The setup string needs to ensure that the modem echos back any commands
  136. it is sent, and asserts carrier detect only while actually connected
  137. with another modem (for Hayes-compatible "AT" command sets, "E1&C1")
  138.  
  139. Press 'M' to define the modem setup.  In this section, you need to enter
  140. several strings to be sent to the modem.  Note that you may enter a ^M
  141. (carriage return) by pressing Alt-M (hold down the Alt key and press M),
  142. an Esc by pressing Alt-E, and a control-H by pressing Alt-H, and a DEL
  143. (ASCII 127) by pressing Alt-D.
  144.  
  145. Press 'R' to define the modem's responses.  These should be the minimum
  146. substring that uniquely identifies the response.
  147.  
  148. Press 'P' to setup dialing parameters.  You may specify the name of the dialing
  149. directory, how long to try before declaring a time-out, how long to wait before
  150. trying again, and the break length.  Break length specifies the length of the
  151. signal that is sent when you give the break command (default Alt-B) in
  152. multiples of the standard clock tick of 55ms.
  153.  
  154. Press 'Z' to set the parameters for Zmodem transfers.  There are three sets of
  155. parameters for sending files with Zmodem, allowing you to tailor the best
  156. throughput under up to three separate sets of conditions.  I use the "fast"
  157. set for BBSs, and the "medium" set for my Unix account.  The "slow" set is
  158. configured by default for a system which can't handle full streaming.
  159. Note that PCZ will work just fine in place of DSZ if you set the program
  160. pathname to PCZ instead of DSZ, and provide sufficient memory (PCZ needs more
  161. memory than DSZ).
  162.  
  163. The general DSZ parameters (second item on submenu) allow replacable
  164. parameters introduced by a percent sign.  See the EXEC macro command for
  165. details.  The replacable parameters are expanded each time DSZ is invoked.
  166. Note that the default "portx" will cause DSZ to report the port as COM9,
  167. but it will still use the correct serial port.
  168.  
  169. Press 'C' to set the colors you want RBcomm to use.  You may select the
  170. default and "underlined" colors, as well as the colors to use on menus.
  171.  
  172. Press 'V' to determine whether 132-column mode should be enabled, whether to
  173. start in 132- or 80-column mode, and the register values needed to set 132-
  174. column mode.  When running under DESQview, RBcomm can tell DESQview to set
  175. the virtual screen size to 132 columns if you specify zero for AX.
  176.  
  177. Press 'T' to adjust a number of toggles.
  178.    "Local echo" allows you to turn on half-duplex operation by default.
  179.    "Verbose" sets whether to include terminal control sequences in a log file.
  180.    Visual bell specifies whether to flash the screen or sound a beep when a
  181.       ^G is received (internally-generated beeps always use sound).
  182.    "Check for enhanced keyboard" determines whether RBcomm will use the
  183.       enhanced keyboard BIOS calls if it thinks those calls exist.  Some
  184.       systems incorrectly indicate support for those calls.  Set this to
  185.       'N' if RBcomm appears to hang your system.
  186.    "Allow RBcomm to change NumLock" determines whether RBcomm will change the
  187.       state of the NumLock key when it receives the "keypad numeric mode" or
  188.       "keypad application mode" commands.  Disabling the NumLock changes is
  189.       useful for laptop users without a separate number pad.
  190.    "Should backspace send delete" specifies whether the values sent by
  191.       backspace and control-backspace should be exchanged.
  192.  
  193. Finally, press 'O' for miscellaneous options.
  194.    "Time between sends in idle mode" determines how often Idle mode (see
  195.       Alt-I) sends some characters to keep the connection alive.
  196.    "Answerback message" allows you to specify the string which RBcomm will
  197.       send when it receives a ^E.
  198.  
  199. On choosing "Quit" from the menu, you will be asked whether to save the
  200. new configuration to disk.  If you specify that you want to save the changes,
  201. the executable on disk will be updated.
  202.  
  203. ---------------------
  204. DESQview Installation
  205. ---------------------
  206.  
  207. After performing the file copy and configuration described in the previous
  208. section, you need to install RBcomm on the DESQview Open Window menu.  In
  209. DESQview, tap the Alt key to bring up the DESQview menu, then press "O" for
  210. the Open Window menu, and "AP" to add a program.  Select "Other", then fill
  211. in the directory in which you've placed the RBcomm files and press Enter.
  212. You will be given the choice of RBcomm, RBcomm plus DSZ, and RBcomm 132col;
  213. select one or more and press Enter.  Now use "CP" from the Open Window menu
  214. to change the paths and/or the keys for starting RBcomm.
  215.  
  216. The only difference between "RBcomm" and "RBcomm + DSZ" is that the former
  217. allocates the minimum amount of memory for RBcomm to run (41K), which is not
  218. enough to invoke DSZ, but does save 25K when you do not need file transfer
  219. capability.  If your environment is particularly large, you may need to use
  220. Change a Program to increase the window sizes by a K or two.  With certain
  221. screen sizes, you may also need to give RBcomm 1K of system memory (on the
  222. advanced options screen).
  223.  
  224. "RBcomm 132col" and "RBcomm + DSZ" are the same except that the former defines
  225. the maximum screen size to be 20 columns (this is not a mistake, it reduces
  226. the DESQview overhead) and gives RBcomm sufficient system memory to store the
  227. 132x25 screen (be sure to tell RBCONFIG to allow 132-column mode!).  If you are
  228. not interested in the reason, skip the rest of this paragraph.    DV normally
  229. reuses the same section of memory when resizing the virtual screen.  However,
  230. resizing it beyond the maximum defined by the .DVP (and "Change a Program"
  231. only allows 127 columns) causes an entire new buffer to be allocated.  Thus,
  232. minimizing the "maximum screen size" also minimizes the DESQview overhead by
  233. reducing the size of the screen buffer which gets discarded.
  234.  
  235. RBcomm is sufficiently DESQview-aware to ask DV for the size of the screen.
  236. If you want a 120x60 screen, just set the maximum window size to 120 columns
  237. and 60 rows.  DESQview will display as much as it can on your screen, but
  238. RBcomm will use the full size.  If you have enabled 132-column mode with
  239. RBCONFIG, RBcomm will also switch to 132 columns by the given number of rows
  240. when it receives the sequence "<Esc>[?3h".
  241.  
  242. RBcomm refuses to load itself twice on the same serial port when running
  243. under DESQview.  However, when shelled to DOS, you can load another copy
  244. in a different window, but make sure to exit the second copy before
  245. returning from the DOS shell, or the first copy will abort.
  246.  
  247. Finally, RBcomm returns the rest of its time-slice to DV if it doesn't need a
  248. full slice.  This improves the performance of programs in other windows.
  249.  
  250. -----------------------------------------------------------------------------
  251. Dialing Directory
  252. -----------------
  253.  
  254. The dialing directory is a plain text file, containing up to twenty entries
  255. (any additional entries will be ignored).  Each entry consists of two lines,
  256. looking like this, with no blank lines between entries:
  257.  
  258.     Doctor's WOC Inn
  259.     14128817757|4800N81|B|OPUS|password|\\N2
  260.  
  261. The first line contains the description which will be used in the dialing
  262. directory and when dialing.  The second line contains six fields separated by
  263. vertical bars.  These fields are
  264.  
  265.      1. number to dial (direct connection if empty)
  266.      2. modem parameters, containing in order
  267.       baud rate (110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400,
  268.              57600)
  269.       parity    (N for none, E for even, O for odd, S for space,
  270.              M for mark)
  271.           data bits (5, 6, 7 or 8)
  272.           stop bits (1 or 2)
  273.           handshake to use when receive buffer is full
  274.                     (H for hardware RTS/CTS, X for software XON/XOFF)
  275.                     (optional, default is hardware)
  276.       timed call flag
  277.             (if handshake present and the character after the handshake
  278.              is T, a short "bip" will sound about 50 seconds into each
  279.              minute after establishing a connection.  Every five
  280.              minutes, the "bip" sounds twice)
  281.       serial port number
  282.             (if handshake is present, following either the handshake
  283.              character or the "T" timed call flag with a comma and
  284.              the number of the serial port will tell RBcomm to switch
  285.              to that port before dialing)
  286.      3. terminal emulation
  287.       A for ANSI with VT102 extensions
  288.       B for ANSI-BBS (same as ANSI, but clearing screen also homes cursor,
  289.               character set switching is disabled, and the AVATAR
  290.               level 0 command set replaces two RBcomm private
  291.               commands)
  292.       V for VT52 with H19 extensions
  293.      4. keyboard macro file to load
  294.      5. password for this system (used by PASSWORD macro command).  Display of
  295.           passwords in the dialing directory may be turned on or off with
  296.           RBCONFIG.
  297.      6. optional modem setup string, minus command lead-in defined by RBCONFIG
  298.       (may include vertical bars).    In the example above, the \\N2 tells
  299.       my modem to use MNP error correction.
  300.  
  301. If the keyboard macro file field is non-empty, the specified file will be
  302. loaded immediately upon successfully connecting with the remote system.  Since
  303. each entry in the dialing directory can specify an independent set of keyboard
  304. macros, you can have a different set of keyboard bindings for each system.
  305. If the macro file specifies a binding for the ONLOAD "key", that macro will be
  306. executed immediately.  Further, if the macro file specifies a binding for the
  307. AUTO "key", that macro will be executed immediately after the ONLOAD macro (if
  308. any).
  309.  
  310. The setup string may contain the following special sequences:
  311.         ~    pause for half a second
  312.         \n   send a line feed
  313.         \r   send a carriage return
  314.         \f   send a form feed
  315.         \t   send a horizontal tab
  316.         \a   send a ^G
  317.         \b   send a backspace
  318.     \!   send a break
  319.         \~   send a tilde
  320.         \\   send a backslash
  321.  
  322. Example modem parameters:
  323.     1200E71X     default COM port, 1200 bps, even parity, seven data
  324.              bits, one stop bit, use Xon/Xoff handshake when
  325.              receive buffer fills up
  326.     19200N81HT,2     COM2, 19,200 bps, no parity, eight data bits, one
  327.              stop bit, use hardware handshake, and sound off
  328.              every minute
  329.  
  330. -----------------------------------------------------------------------------
  331. Environment Variables
  332. ---------------------
  333.  
  334. RBcomm uses the following variables in its environment:
  335.  
  336. COMSPEC   specifies which program to load for Shell-to-DOS (Alt-D) and
  337.       Execute-Program (Alt-G).
  338.  
  339. RBCOMM      overrides the default RBcomm data directory.    The data directory
  340.       is where RBcomm stores its dialing directory and all macro files.
  341.  
  342. RBCDIAL   overrides the default dialing directory file.  Do not use a path
  343.       in the value of this variable, only a filename and extension (which
  344.       defaults to .DIR).  The value of this variable will be appended to
  345.       the data directory (either default or specified by the RBCOMM
  346.       variable) to produce the name of the dialing directory.
  347.  
  348. -----------------------------------------------------------------------------
  349. Keyboard Commands
  350. -----------------
  351.  
  352. The commands described here may be bound to other keys, but the default
  353. keystroke named here may always be used when preceded by Alt-= (hold down
  354. the Alt key and press the equal sign at the upper right of the typewriter
  355. section of the keyboard).
  356.  
  357. Alt-A   attack dial
  358.  
  359.         Repeatedly dials the number you select from the dialing directory
  360.         until a connection is established.  You may also manually enter a
  361.         number to attack-dial.
  362.  
  363. Alt-B   send break
  364.  
  365. Alt-C   call a number
  366.  
  367.         Dial the number you select from the dialing directory (once only).
  368.     You may also manually enter a number to dial.  If you are currently
  369.     connected to another system, you will be prompted whether to hang
  370.     up.  Press Esc to abort the dial and return to the current session.
  371.     Press "Y" to disconnect and then dial a new number, or "N" to maintain
  372.     the current connection and load new macros and parameters without
  373.     dialing.
  374.  
  375.         Note that the modem parameters always have an "H" appended when neither
  376.         "H" nor "X" is present in the dialing directory, since the handshake
  377.         defaults to hardware.
  378.  
  379. Alt-D   DOS shell
  380.  
  381.         Temporarily exit to DOS.  Type "EXIT" to return to comm session.
  382.     RBcomm will swap itself out of memory, leaving only 592 bytes plus
  383.     its copy of the environment in memory.    A 64K swap file will be
  384.         created in the directory you specified with RBCONFIG, and will be
  385.         deleted when you return to the comm session.  File transfers also
  386.         create the temporary swap file.
  387.  
  388. Alt-E   toggle local echo
  389.  
  390.         By default, RBcomm assumes that the remote system will echo any
  391.         characters you need to see.  After pressing Alt-E once, RBcomm will
  392.         display any characters you type without requiring the remote system
  393.         to echo them.  After pressing Alt-E a second time, RBcomm will once
  394.         again assume that the remote system will echo characters.
  395.  
  396. Alt-F    list files
  397.  
  398.         Display a three-up listing of the files matching a given filespec.
  399.  
  400. Alt-G    Go execute a program
  401.  
  402.     You will be prompted to enter a command.  Everything up to the first
  403.     blank is the program to execute (if it starts with an exclamation
  404.     mark ['!'], the rest of the line is passed to COMMAND.COM, otherwise,
  405.     you must specify a full path and extension--searching the path would
  406.     significantly increase the size of the RBcomm executable), and the rest
  407.     of the line is the command tail to pass to the program.
  408.  
  409. Alt-H   hang up
  410.  
  411.         Terminate the connection.  First drops DTR, and if Carrier Detect is
  412.     still active, sends the modem's hangup string.  The default macro set
  413.     is reloaded from disk (if present) or from the built-in defaults.
  414.     If the CLEANUP "key" has a macro binding, it is executed before
  415.     hanging up; if it includes the LOWER_DTR command, DTR will remain
  416.     dropped.
  417.  
  418. Alt-I   idle
  419.  
  420.         This command allows you to keep a connection alive if you need to step
  421.         away from your computer for a while.  Sends a space followed by a
  422.     backspace every two minutes (configurable with RBCONFIG) until you
  423.     press a key to cancel the command.
  424.  
  425. Alt-J   jump to directory
  426.  
  427.         Pops up a window displaying the current directory.  You may switch to
  428.         a different directory by entering it in place of the displayed
  429.         directory.  Relative paths without a leading slash or backslash will
  430.         change to a subdirectory of the current directory.  If you specify a
  431.         drive letter, that drive will become the current drive as well.
  432.  
  433. Alt-K   unused
  434.  
  435. Alt-L   toggle logging to file
  436.  
  437.         When pressed the first time, you will be asked for the name of a file
  438.         to which all characters received from the remote system will be
  439.     appended (percent signs introduce variable expansions--see the EXEC
  440.     and OPEN_LOG commands below).  When pressed the second time, RBcomm
  441.     will no longer append received characters to that file.  If verbose
  442.     (see Alt-Y) is active, all characters will be appended exactly as
  443.     received, otherwise any command sequences embedded in the received
  444.     data are stripped out.
  445.  
  446. Alt-M   learn macro
  447.  
  448.     When you press Alt-M, you will be asked which key you want to assign
  449.     the macro to.  You may then enter a text string of up to 78 characters
  450.     (if a TEXT macro is already assigned to the key, the current value
  451.     becomes the default value in the input line), using the same editing
  452.     keys used elsewhere.
  453.  
  454. Alt-N   unused
  455.  
  456. Alt-O   send file with slowed-down Zmodem
  457.  
  458.         This command will send the specified file(s) using the "slow" Zmodem
  459.         parameters installed by RBCONFIG.
  460.         (subject to change in future versions)
  461.  
  462. Alt-P   set parameters
  463.  
  464.         This command pops up a menu which allows you to set the following
  465.     parameters:  COM port, speed, parity, parity stripping, handshake,
  466.     backspace translation, visual bell, and terminal emulation.  You may
  467.     also reset the terminal emulation to its initial state, in case the
  468.     remote system leaves you stranded in a strange condition.  Press Esc,
  469.     Enter, or 'R' to exit this menu.
  470.  
  471.         Note that Alt-P will discard any characters which have been received
  472.     but not yet processed, because it always reinitializes the serial
  473.     port when it pops down.
  474.  
  475. Alt-Q    dial queue of numbers
  476.  
  477.         Repeatedly dials each number you specify until a connection is
  478.         established with one of the numbers.  The numbers are dialed in
  479.         round-robin fashion until a connection is established.  A beep will
  480.         sound to notify you of the connection, and the name of the remote
  481.         system and the modem's connect response will be displayed.
  482.  
  483.         You specify the numbers to dial by giving the digit or letter as it
  484.         appears in the dialing directory (case is ignored on letters).  A
  485.         number may be specified more than once, and will be dialed more than
  486.         once during a round of dialing attempts.  As a shortcut, specifying
  487.         an asterisk ('*') instead of a list of numbers will dial all numbers
  488.         in the dialing directory in order.
  489.  
  490. Alt-R   receive file
  491.  
  492.         Pops up a menu allowing you to select the protocol with which you wish
  493.         to receive a file from a remote system.  Press ESCape if you do not
  494.         wish to receive a file.  Note that Zmodem features automatic download,
  495.         so you do not need to press Alt-R unless you wish to give DSZ
  496.     additional parameters.    You may also add additional autodownloading
  497.     protocols--see the WHEN macro command in the next section.
  498.  
  499.     Not listed on the menu:  ^G, ^Y, and ^Z pop up a parameter prompt,
  500.     then proceed with the download specified by the corresponding
  501.     non-control letter.
  502.  
  503. Alt-S   send file
  504.  
  505.         Pops up a menu allowing you to select the protocol with which you wish
  506.         to send a file to a remote system.  Press ESCape if you do not wish to
  507.         send a file.  After selecting a protocol, you will be asked to enter
  508.         the name of the file to send (Ymodem, Ymodem-G, and Zmodem allow
  509.         wildcards and multiple filespecs).
  510.  
  511.         If you press the control character corresponding to the desired
  512.         protocol, the file(s) will be deleted after a successful transfer.
  513.         For batch transfers, only the files corresponding to the first
  514.         filespec are deleted.
  515.  
  516.     Also unlisted on the menu:  pressing 'R' (or ^R) will send with
  517.     Zmodem using the "medium" parameters and pressing 'S' (or ^S) will
  518.     send the file with Zmodem using the "slow" Zmodem parameters installed
  519.     by RBCONFIG.
  520.  
  521. Alt-T   type ASCII file to other system
  522.  
  523.     sends an ASCII file to the remote system, pausing after each line
  524.     for the return to be echoed.  The send may be aborted at any time
  525.     by pressing Escape.
  526.  
  527. Alt-U   load/save user interface as defined in keyboard macro file
  528.  
  529.         Note that keyboard macro files are always stored in the RBcomm
  530.         directory as defined by RBCONFIG.
  531.  
  532.         WORDSTAR.RBM and EMACS.RBM contain the keyboard definitions for using
  533.         WordStar (tm) and Emacs cursor movement commands on the cursor pad
  534.         (i.e. Home goes to the start of the line, etc.)  EMACS.RBM also binds
  535.         all Alt-letter keys to be Esc-letter, making the Alt key into a true
  536.         Emacs meta-key.  You will need to use the Alt-= override to use the
  537.         RBcomm commands while EMACS.RBM is loaded.
  538.  
  539. Alt-V    View file
  540.     (toggle verbose, which used to be on Alt-V, is now on Alt-Y)
  541.  
  542.     Page through a text file.  This is a very minimal file lister.
  543.     Press the space bar to display next screenfull, Escape to quit.
  544.  
  545. Alt-W   unused
  546.  
  547. Alt-X   exit
  548.  
  549.         Terminate RBcomm.  If you are still connected to the remote system
  550.         (Carrier Detect asserted), you will be asked whether or not to hang
  551.         up.
  552.  
  553. Alt-Y    toggle verbose
  554.     (previously Alt-V)
  555.  
  556.         Toggles the verbose mode used with Alt-L.  When not logging, the
  557.         control characters which are not used for terminal commands will be
  558.         displayed as ^X when received from the remote system.  When logging to
  559.         a file, terminal command sequences will only be stored in the log file
  560.         if verbose mode is ON.
  561.  
  562. Alt-Z    send file with Zmodem
  563.  
  564.         This command will send the specified file(s) with the "medium" Zmodem
  565.         parameters installed by RBCONFIG.
  566.  
  567. Alt-1,2,3,4,5,6,7,8,9,0  dial first ten numbers in dialing directory
  568.  
  569. Alt-F1 through Alt-F10   dial 11th through 20th number in dialing directory
  570.  
  571. F1      pop up help screen
  572.         
  573.     Displays the contents of the help file for the current macro file
  574.     (if that file is not found, RBcomm attempts to use RBCOMM.HLP).
  575.     Press an Alt or function key to execute the default binding for the
  576.     key.  Escape exits immediately, and any other key pages through the
  577.     help file (if more than 20 lines long).
  578.  
  579. Alt--    cancel any pending WHEN, DELAYED, or WINDOW commands
  580.  
  581. Alt-=   use default binding of next keystroke
  582.  
  583.         If the keyboard has been redefined, pressing Alt-= will allow you to
  584.     access the built-in default definitions (as listed in this section).
  585.     Press Alt-= and then immediately press the key whose default
  586.     definition you want to use.
  587.  
  588. -----------------------------------------------------------------------------
  589. Line Editor
  590. -----------
  591.  
  592. Whenever you are prompted for a line of input, you may use the following
  593. keys to edit the line:
  594.  
  595.         Esc     abort
  596.     Home    move to start of line
  597.     End    move to end of line
  598.     Right    move a character right
  599.     Left    move a character left
  600.     Del    delete the character under the cursor and shift remainder of
  601.         line left
  602.     Backsp    delete the character to the left of the cursor, and shift the
  603.         remainder of the line left
  604.     Return    finish input
  605.         Alt-D   insert an ASCII DEL character
  606.     Alt-E    insert a literal Esc character
  607.     Alt-H    insert an ASCII backspace character
  608.         Alt-M   insert a literal Return character
  609.     Alt-P    insert the contents of the cut buffer
  610.  
  611. -----------------------------------------------------------------------------
  612. Warnings
  613. --------
  614.  
  615. Don't try to load a TSR while shelled to DOS.  RBcomm won't be able to swap
  616. itself back in and will have to abort.  Your connection will not be broken,
  617. however.
  618.  
  619. Don't mess with the swap file while shelled.  You'll be sorry....  (RBcomm is
  620. able to detect a missing or truncated swap file on returning, but not other
  621. changes)
  622.  
  623. IMPORTANT:  if you are swapping to a floppy drive, DO NOT UNDER ANY
  624. CIRCUMSTANCES replace that floppy disk while shelled to DOS or running a file
  625. transfer.  You will definitely trash the file allocation tables and directory
  626. of the second disk.  This is a problem with DOS itself (at least through
  627. 3.10, later versions may have corrected it) when faced with a diskette
  628. change while a file is open on the diskette which gets removed.  The swap
  629. file is such an open file.
  630.  
  631. -----------------------------------------------------------------------------
  632. Known Bugs and Limitations
  633. --------------------------
  634.  
  635. Any OPEN_LOG command in the OnLoad macro will fail when the macro is loaded
  636. manually.  There is no easy fix for this one, as it is tied in deeply with
  637. the way windows and the terminal emulator interact.
  638.  
  639. If you are using a serial port which the BIOS does not recognize, you will
  640. need to get a program to initialize the port.  Otherwise, RBcomm will most
  641. likely read garbage parameters from the port at startup, requiring you to
  642. set the parameters by hand with Alt-P.
  643.  
  644. -----------------------------------------------------------------------------
  645. Macro Compiler
  646. --------------
  647.  
  648. Syntax:  MACRO {t|m} infile outfile
  649. where 't' specifies compilation from text file to keyboard macro file
  650. and 'm' specifies decompilation from macro file to text file
  651. default extensions are .MAC for text files and .RBM for macro files
  652.  
  653.  
  654. Important Note:
  655.     RBcomm v3.1 and later macro files are COMPLETELY INCOMPATIBLE
  656.     with earlier versions.    You must recompile all your macro files.
  657.     If RBcomm doesn't complain, you don't need to recompile.
  658.  
  659. -------------------
  660. Macro File Commands
  661. -------------------
  662.  
  663. Each command has the following form:
  664.  
  665.     keyname  commandword   [args]
  666.  
  667. where keyname specifies to which key the command is to be bound.  Keynames
  668. (which are not case-sensitive) are:
  669.     F1 through F12 for the function keys
  670.        +F1 through +F12 for the shifted function keys
  671.        ^F1 through ^F12 for the control function keys
  672.        @F1 through @F12 for the alt-function keys
  673.        @A through @Z for the alt-letter keys
  674.        @1 through @0 for the alt-digits
  675.        Gray+, Gray-, Gray*, Gray/ for plus, minus, star, slash keys on keypad
  676.        @Plus and @Minus, @Gr*, @Gr/ for Alt-Gray+, Alt-Gray-, Alt-Gray* and
  677.        Alt-Gray/
  678.        Left, Right, Up, Down for the cursor keys on the numeric pad
  679.        Home, End, PgUp, PgDn, Ins, and Del for the other keypad keys
  680.        KP5 for the '5' key on the number pad (enhanced keyboard)
  681.        ^Home, etc. for the control versions of the numberpad keys
  682.        CP_Home     Home key on gray cursor pad
  683.        CP_Up     Up arrow on gray cursor pad
  684.        CP_Down     Down arrow on gray cursor pad
  685.        CP_Enter  Enter key on cursor pad
  686.         etc.
  687.        @Left, @Right, @Up, @Down, @Home, @End, @PgUp, @PgDn, @Ins, @Del for
  688.            Alt- versions of the cursor pad keys
  689.        ^Left, ^Right, etc for Ctrl- versions of the cursor pad keys
  690.        ^Break    for control-break
  691.        @- @= @[ @\ @] @; @' @, @. @/ @` @* for various other Alt-keys
  692.  
  693. There are also some pseudo-keys to which you may assign a macro:
  694.        "OnLoad" is executed any time the macro file is loaded into memory
  695.        "Auto" is executed automatically when a connection is established
  696.        "Reconnect" is executed automatically when reconnecting without
  697.         hanging up and redialing
  698.        "CleanUp" is executed when hanging up if carrier detect is active
  699.        "OnAbort" is executed whenever a macro other than OnAbort aborts and
  700.         displays the **ABORTED** message, just prior to displaying
  701.         the message
  702.  
  703. And there is a no-operation pseudo-key for use by FORCE_CLEANUP:
  704.        "Null" does nothing and returns immediately
  705.  
  706. You may assign macros to control keys by specifying "^x" as the key name,
  707. where "x" is the control key you want to use.  Similarly, you may assign
  708. a macro to a regular key by preceding the character representing the key
  709. by a backslash.   Note that macros are never in effect when you are
  710. prompted for information by RBcomm; they only affect what (if anything)
  711. gets sent to the remote system.
  712.  
  713. Finally, you may use "#nnn" where nnn is the decimal scancode of the key
  714. you wish to assign the macro to (values of 200 through 255 are reserved,
  715. 167 through 199 are currently unused by any key combinations supported
  716. by the BIOS).
  717.  
  718. Note that the cursor pad keys will execute the binding for the
  719. corresponding number pad key if not specifically bound (but not vice
  720. versa).  CP_Enter defaults to the binding for @Enter.
  721.  
  722. The commandword is not case-sensitive, but you must include the
  723. underscore if present and use the entire commandword (abbreviations are
  724. not supported).
  725.  
  726. With the exception of the ANSWERBACK, TEST, TEXT, WAITFOR, and WHEN commands,
  727. all commands which take a string argument pop up a prompt if the string
  728. is empty (i.e. "").  Strings may include the following special sequences:
  729.     ^x   specified control character
  730.         ^?   ASCII DEL (127)
  731.         \a   ^G (bell)
  732.     \b   backspace
  733.     \e   escape
  734.     \f   form feed
  735.     \n   line feed
  736.         \r   carriage return
  737.     \t   horizontal tab
  738.     \v   vertical tab
  739.     \\   backslash
  740.     \^   carat
  741.     \0   ASCII NUL (for TEXT command only)
  742. For character arguments, you may specify either
  743.     'c'
  744. where the character c is interpreted as for a string, or you may specify its
  745. ASCII value.
  746.  
  747. Everything from a semicolon (unless it is in a string) to the end of the line
  748. is considered a comment, as are blank lines.
  749.  
  750. If a line starts with #include rather than a key name, the specified file
  751. will be compiled into the macro file as if it were part of the current text
  752. file.  Note that the string is processed just like any other strings, so that
  753. you must double any backslashes (or use forward slashes, instead).
  754. Format:
  755.     #INCLUDE  "d:/path/filename"
  756. an extension of .MAC is assumed if no extension is given, and the drive letter
  757. and path are optional (default is current drive and directory).  #INCLUDEs may
  758. be nested up to twelve deep.
  759.  
  760. If a line starts with #ignore rather than a key name, any subsequent
  761. occurrences of the keyname following the #ignore will be ignored, just as if
  762. you had already defined a binding for the key.    This is useful when
  763. #include'ing a file if you do not want all the bindings in the included file.
  764. Format:
  765.        #IGNORE    <keyname>
  766.  
  767. For readability, you may give names to extended keys with the
  768.        #DEFKEY <newname> <keynumber>
  769. command.  User names will be lost on decompiling the macro file,
  770. however.  For example, "#defkey Proc1 199" will let you refer to "Proc1"
  771. and "#199" interchangeably.
  772.  
  773. ABORT
  774.     abort the current macro or operation as if the user had pressed Esc.
  775.  
  776. ABORT_UNTIL
  777.     Abort any currently executing UNTIL command after the command(s) it
  778.     controls complete.  If multiple UNTIL commands are nested, each is
  779.     aborted as the commands it controls complete, until all pending
  780.     UNTILs have been aborted.  Useful mainly in conjunction with the
  781.     DELAYED command to provide a timeout on UNTIL loops.
  782.  
  783.     See also DELAYED, UNTIL.
  784.  
  785. ANSWERBACK "string"
  786.     sets the answerback message to the specified string.  If the string is
  787.     empty (i.e. ""), answerback is disabled (making ^E a cursor-positioning
  788.     command), otherwise, answerback is enabled.
  789.  
  790. AT hh:mm:ss
  791.     execute the following line (or lines if a MULTI) at the specified
  792.     time.  If the specified time is less than the current time, the
  793.     command(s) will be executed the next day.  The seconds may be
  794.     omitted, in which case they default to 0.
  795.  
  796.     Note: the command(s) may actually execute later than requested if
  797.       RBcomm is busy processing incoming characters at the time the
  798.       command should execute.  The command will execute as soon as RBcomm
  799.       empties its receive buffer.
  800.  
  801.     See also DELAYED.
  802.  
  803. AUTO_ZMODEM
  804.     reenable Zmodem and Puma autodownloads if they have been canceled by
  805.     an ENDWHEN.  This is functionally equivalent to
  806.         WHEN 0 "**^XB00"
  807.            RECEIVE 'Z'
  808.         WHEN 0 "^X^H^XPuma^X^H^X"
  809.            RECEIVE 'P'
  810.     The autodownloads are also reenabled when hanging up, dialing, or
  811.     loading a new macro file.
  812.  
  813.     WARNING: do not invoke while autodownload is enabled, as you will wind
  814.        up invoking a download multiple times for one download request....
  815.  
  816.     Note: this command will be renamed to AUTO_XFER in a future release.
  817.  
  818.     See also ENDWHEN, WHEN.
  819.  
  820. AWAITKEY
  821.     pause until a key is pressed.  The next function which reads a key
  822.     will read the key which was pressed.  Returns immediately if there
  823.     was any typeahead (including RBcomm's key stack).
  824.  
  825.     See also KFLUSH.
  826.  
  827. BEEP
  828.     sound the bell.  Useful mainly in conjunction with the MULTI or
  829.     DELAYED commands (see below).
  830.  
  831. BREAK
  832.     send a break to the remote system
  833.  
  834. CALL keyname
  835.         execute the macro (if any) bound to the specified key and then continue
  836.     executing the current macro (if inside a MULTI).
  837.  
  838.     See also GOTO_KEY, PUSHKEY.
  839.  
  840. CANCEL_DELAYED which
  841.     cancel the specified delayed action.  Currently supported:
  842.            ALL    cancel all delayed actions
  843.            LAST   cancel the last executed DELAYED.  If called a second
  844.               time without an intervening DELAYED, the second call
  845.               is ignored.
  846.  
  847.     See also DELAYED.
  848.  
  849. CANCEL_NOTIFY
  850.     remove the notify window immediately instead of at the end of the
  851.     configured period of time.
  852.  
  853. CHDIR "dir"
  854.     change the DOS default directory to the specified directory.
  855.  
  856. CLOSE_LOG
  857.     close the current log file.  If logging is off, this command has no
  858.     effect.
  859.     See also OPEN_LOG, TOGGLE_LOG.
  860.  
  861. CUT num dir "search"
  862.     search the screen backwards from the current cursor position until
  863.     the search string (case sensitive) is found, then copy "num"
  864.     characters in the indicated direction (AFTER or BEFORE) to the cut
  865.     buffer.  The contents of the cut buffer remain unchanged if the search
  866.     string is not found (in which case the completion status is set to
  867.     FAILED for testing by IF or UNTIL).  The cut buffer may be sent to
  868.     the remote system with the PASTE command, inserted into a line
  869.     being edited by pressing Alt-P, or inserted with the %C variable
  870.     expansion.
  871.  
  872.     Note that trailing blanks are deleted from the cut buffer.  In
  873.     addition, the CUT command treats the entire screen (even if a WINDOW
  874.     command was used to restrict output to a portion of the screen) as a
  875.     single long line, ignoring all line wrapping for both search and cut.
  876.  
  877.     Examples:
  878.        Screen contains "1234test5678cursor here->" and the cursor is as
  879.        indicated.  Then
  880.         CUT 3 BEFORE "test"
  881.        places "234" into the cut buffer, while
  882.         CUT 6 AFTER "test"
  883.        places "5678cu" into the cut buffer.  Further,
  884.         CUT 7 BEFORE ""
  885.        will place " here->" into the cut buffer.
  886.  
  887.     See also PASTE.
  888.  
  889. DELAYED time
  890.         execute the macro on the next line (or lines if it is a MULTI) the
  891.     given amount of time from now.    You may have up to six delayed
  892.     commands active at any given time.  The maximum delay time is 18
  893.     hours; the macro compiler will complain if you attempt to use a
  894.     greater delay.    Times are specified as
  895.         seconds
  896.         minutes:seconds
  897.     or    hours:minutes:seconds
  898.  
  899.         Note: the command may actually execute later than requested if RBcomm
  900.           is busy processing incoming characters at the time the command should
  901.       execute.  The command will execute as soon as RBcomm empties its
  902.       receive buffer.
  903.  
  904.     See also CANCEL_DELAYED, WHEN.
  905.  
  906. DIAL number redial
  907.     dial the specified entry (0-19) from the dialing directory, or pop up
  908.     the dialing directory if 'number' is PROMPT.  'redial' specifies how
  909.     to dial:
  910.         ONCE    make only one attempt
  911.         ATTACK    try repeatedly until connected
  912.         RECONNECT    make a single attempt if not connected, or set
  913.             parameters and password without dialing if already
  914.             connected
  915.  
  916.     See also LISTDIAL.
  917.  
  918. ECHO ON|OFF
  919.     ECHO ON forces half-duplex (local echo on) mode, ECHO OFF forces
  920.     full-duplex (local echo off).
  921.     (see Alt-E)
  922.  
  923.     See also TOGGLE_ECHO.
  924.  
  925. ENDWHEN which
  926.     cancel the specified WHEN command.  Currently supported:
  927.        ALL           cancel all WHENs except the Zmodem and Puma
  928.              autodownloads
  929.        ALL_XFER    cancel all WHENs including the autodownloads
  930.        LAST        cancel the last executed WHEN.  A second call without
  931.              an intervening WHEN acts the same as ENDWHEN ALL.
  932.  
  933.     See also WHEN.
  934.  
  935. EXEC "command-to-execute"
  936.     everything up to the first blank in the string specifies the program to
  937.     execute (either full path and extension, or "!prog" to let COMMAND.COM
  938.     find and fire up the program), the remainder of the string is the
  939.     command tail to pass to the program.  Note that a following IF
  940.     command will always consider the EXEC to have succeeded if you use the
  941.     !prog form (that's because COMMAND.COM does not pass on the completion
  942.     status of the program it runs).
  943.  
  944.     Within the command tail, a percent sign introduces a variable
  945.     substitution.  The following sequences are supported:
  946.         %a     hexadecimal I/O base address being used
  947.         %C     contents of the cut buffer
  948.             %d   current date, in format mm-dd-yy
  949.         %D     current directory, including drive
  950.         %i     IRQ number being used (0-15)
  951.         %I     get input from user.  The following characters up to the next
  952.          percent sign are used as the prompt and then discarded.
  953.         %M     current macro file name
  954.         %p     port number (1-4)
  955.         %P     port parameters, in same format as dialing directory
  956.          display
  957.         %s     current serial port speed
  958.         %t     current time, in format hh:mm:ss
  959.         %V     get an environment variable.  The following characters up to
  960.          the next percent sign are used as the name of the variable
  961.          and then discarded.
  962.         %%     a percent sign
  963.  
  964.     See also EXECN, IF, SHELL.
  965.  
  966. EXECN  "command-to-execute"
  967.     This command is identical to EXEC, except that no error box is
  968.     displayed in the event of an error.
  969.  
  970.     See also EXEC.
  971.  
  972. EXIT
  973.     End RBcomm.  Will prompt you whether or not to hang up if you are
  974.     still connected to another system.
  975.  
  976. FDELETE "filespec"
  977.     delete the file(s) named by filespec (which may include wildcards).
  978.     Note that there is no confirmation requested, so use this command
  979.     with care!!!
  980.  
  981.     See also FILES.
  982.  
  983. FILES "filespec"
  984.     display a three-up list of the files matching the filespec
  985.  
  986.     See also FDELETE.
  987.  
  988. FORCE_CLEANUP keyname
  989.     execute the following line(s), then execute the macro bound to
  990.     "keyname" regardless of how the commands are exited (i.e. normally,
  991.     ABORT, or <Esc>).  FORCE_CLEANUPs may be nested, in which case
  992.     the innermost one is the only one to execute unless the cleanup
  993.     code executes an ABORT itself (then execution gets passed to the one
  994.     enclosing it, etc.).  If no cleanup is needed and the FORCE_CLEANUP
  995.     is merely being used to prevent a complete abort on Esc, the pseudo-
  996.     key Null may be used.  Null is guaranteed to perform no action and
  997.     return immediately.
  998.  
  999. GOTO_KEY keyname
  1000.     continue execution with the specified macro (if bound).  Never returns
  1001.     to the current macro.  If the key is not bound (i.e. GOTO_KEY Null),
  1002.     execution resumes at the point from which the current macro was
  1003.     CALLed, effectively producing a return from a nested macro.
  1004.  
  1005.     See also CALL, PUSHKEY.
  1006.  
  1007. HANGUP
  1008.     hang up.  Executes macro bound to "CleanUp" before actually hanging
  1009.     up if carrier detect is active.  After hanging up, the default macro
  1010.     file is reloaded (thus cancelling any remaining WHENs and DELAYEDs).
  1011.  
  1012.     See also HANGUP_ONLY.
  1013.  
  1014. HANGUP_ONLY
  1015.     hang up, but do not execute the "CleanUp" macro or reload macro files.
  1016.  
  1017.     See also HANGUP.
  1018.  
  1019. HELP
  1020.     pop up the help screen
  1021.  
  1022. IDLE
  1023.     go into idle mode, sending a blank followed by a backspace every 2
  1024.     minutes.  Press Esc to end idle mode.
  1025.  
  1026.     Both the interval and the sequence sent by idle mode may be configured
  1027.     with RBCONFIG.
  1028.  
  1029. IF    SUCCESS|FAILED|CONNECTED|OFFLINE|DV|NOT DV
  1030.     IF SUCCESS and IF FAILED conditionally execute a command based on the
  1031.     completion status of an immediately preceding EXEC, SHELL, SEND,
  1032.     SENDFILE, RECEIVE, RECEIVEFILE, or WAITFOR.  The following line (or
  1033.     lines if a MULTI) is executed only if that prior command was
  1034.     successful in the case of IF SUCCESS, or if it failed in the case of
  1035.     IF FAILED.
  1036.  
  1037.     IF CONNECTED executes the following command if carrier detect is
  1038.     asserted, while IF OFFLINE executes the following command if
  1039.     carrier detect is deasserted.
  1040.  
  1041.     IF DV executes the following command if RBcomm has detected that it
  1042.     is running under DESQview, while IF NOT DV executes the following
  1043.     command only if RBcomm is not running under DESQview.
  1044.  
  1045.     For example, if you want to execute a program only after failing to
  1046.     see a particular string, you would use
  1047.  
  1048.         MULTI
  1049.         WAITFOR 10 "don't run program"
  1050.         IF FAILED
  1051.             EXEC "!someprog args"
  1052.         END
  1053.  
  1054.     See also ABORT_UNTIL, EXEC, SHELL, SEND, RECEIVE, WAITFOR, UNTIL.
  1055.  
  1056. KFLUSH
  1057.     empty the keyboard buffer (including RBcomm's key stack).
  1058.  
  1059.     See also AWAITKEY.
  1060.  
  1061. LEARN
  1062.     start learning a keyboard macro
  1063.  
  1064.     See also UI_MENU.
  1065.  
  1066. LISTDIAL "numbers"
  1067.     dial the specified numbers from the dialing directory repeatedly until
  1068.     a connection is established with one of the numbers.  If the empty
  1069.     string is specified, the user will be prompted for the numbers to dial.
  1070.  
  1071.     See also DIAL.
  1072.  
  1073. LOAD_MACRO "file"
  1074.     load the specified macro file from the RBcomm directory.  If an empty
  1075.     filename is given, the user will be prompted for a name, which
  1076.     defaults to the name of the currently loaded macro file.  The current
  1077.     macro (if any) and any that it had interrupted are aborted.  However,
  1078.     if the interruption occurred during a command of extended duration
  1079.     such as a WAITFOR, that command will complete normally before the
  1080.     macro is aborted.
  1081.  
  1082.     See also SAVE_MACRO, UI_MENU.
  1083.  
  1084. LOG "filename" "message"
  1085.     append the specified message to the named file.  Both the filename
  1086.     and the message may contain variable expansions as described under
  1087.     EXEC.  If the filename is (or expands to) the empty string "", the
  1088.     expanded message is appended to the current log file (if any).
  1089.  
  1090.     See also OPEN_LOG.
  1091.  
  1092. LOWER_DTR
  1093.     requests that DTR remain dropped after the next HANGUP or HANGUP_ONLY
  1094.     command.  The best place to put this command is in your CleanUp macro.
  1095.  
  1096. MESSAGE row col msg
  1097.     display the specified message starting at the given row and column on
  1098.     the screen.  If either row or column is 255, use the current row or
  1099.     column.
  1100.  
  1101. MESSAGEBOX msg
  1102.     if running under TopView or DESQview, a window with the given message
  1103.     will pop up for three seconds.    This command is ignored otherwise.
  1104.  
  1105.     The message is limited to 40 characters, anything beyond that is
  1106.     ignored.
  1107.  
  1108.     See also NOTIFY, CANCEL_NOTIFY.
  1109.  
  1110. MULTI
  1111.     the following lines, up to but not including a line starting with END,
  1112.     are assigned to the specified key.  The macros assigned to the key
  1113.     may not total more than 253 bytes, and the macro compiler will
  1114.     complain if they do.
  1115.  
  1116.         The format of the following lines is the same as for a regular macro,
  1117.     except that you do not specify a keyname.  For example, to make
  1118.     shift-F2 switch terminal emulation to VT52, use
  1119.  
  1120.     +F2    MULTI
  1121.         PUSHKEY 13 0
  1122.         PUSHKEY 'V' 0
  1123.         PARAM_MENU
  1124.         END
  1125.  
  1126.     Note: you may use { and } on separate lines as synonyms for MULTI
  1127.     and END.
  1128.  
  1129. NOTIFY    msg
  1130.     if running under TopView or DESQview, and RBcomm determines that it is
  1131.     in the background, a window with the given message will pop up for
  1132.     three seconds.    This command is ignored otherwise.
  1133.  
  1134.     The message is limited to 40 characters, anything beyond that is
  1135.     ignored.
  1136.  
  1137.     See also CANCEL_NOTIFY, MESSAGEBOX.
  1138.  
  1139. OPEN_LOG  "file"
  1140.     if logging is on, the current log file will be closed.    Then, the
  1141.     specified log file will be opened (if no name is given, a prompt is
  1142.     popped up).  The same variable expansions which are valid for
  1143.     the EXEC command are applied to the filename which is given (or
  1144.     entered by the user).
  1145.  
  1146.     For example, to allow the environment variable RBLOG to specify the
  1147.     base name of the log file, use
  1148.         OPEN_LOG "%VRBLOG%.LOG"
  1149.  
  1150.     See also EXEC, CLOSE_LOG, TOGGLE_LOG, RECEIVE.
  1151.  
  1152. PARAM_MENU
  1153.     pop up the "Set Parameters" menu
  1154.  
  1155. PASSWORD
  1156.         send the password defined in the dialing directory.  Does not send
  1157.         a carriage return or any other terminating sequence.
  1158.  
  1159.     See also TEXT, TYPE.
  1160.  
  1161. PASTE
  1162.     send the contents of the cut buffer to the remote system.
  1163.  
  1164.     See also CUT.
  1165.  
  1166. PAUSE num-ticks
  1167.     halt execution for num-ticks/18 seconds.  Useful mainly in conjunction
  1168.     with the MULTI command (see above).
  1169.  
  1170. PUSHKEY key scan
  1171. or
  1172. PUSHKEY keyname
  1173.     put the specified key/scancode pair onto RBcomm's internal keyboard
  1174.     stack, where the last pushed pair will be the next keystroke read
  1175.         by RBcomm.  The stack is currently eight keystrokes in size, and any
  1176.     PUSHKEY executed while the stack is full will simply be ignored.
  1177.     "keyname" may be the name of any keystroke recognized by the macro
  1178.     compiler.
  1179.  
  1180.     Useful mainly in conjunction with the MULTI command (see above).
  1181.  
  1182. RECEIVE 'type'
  1183.     start receiving a file with the specified protocol
  1184.           0    prompt for protocol
  1185.           'A'  ASCII (capture to file--equivalent to OPEN_LOG "")
  1186.           'X'  Xmodem with parameters
  1187.           'K'  Xmodem-K with parameters
  1188.           'Y'  Ymodem
  1189.               '^Y' Ymodem with parameters
  1190.           'G'  Ymodem-G
  1191.               '^G' Ymodem-G with parameters
  1192.           'Z'  Zmodem
  1193.               '^Z' Zmodem with parameters
  1194.  
  1195.     See also IF, OPEN_LOG, SEND, TYPE.
  1196.  
  1197. RECEIVEFILE 'type' "parameters"
  1198.     start receiving using the specified protocol (which may be any of the
  1199.     ones listed for RECEIVE except 0 or 'A'), passing the specified
  1200.     parameters to the file transfer module.  Unlike RECEIVE, this command
  1201.     will not pop up any messages unless it is unable to load the file
  1202.     transfer module; in case of an error, the completion status is set
  1203.     to FAILED.
  1204.  
  1205.     See also RECEIVE, SENDFILE.
  1206.  
  1207. REPEAT times
  1208.     repeat the command on the next line (or lines if a MULTI) the specified
  1209.     number of times.
  1210.  
  1211. RFLUSH
  1212.     clear any characters which may still be in the serial port receive
  1213.     buffer.
  1214.  
  1215.     See also KFLUSH.
  1216.  
  1217. SAVE_MACRO "file"
  1218.     save the current macros to the specified file, located in the RBcomm
  1219.     directory.
  1220.  
  1221.     See also LOAD_MACRO, UI_MENU.
  1222.  
  1223. SEND 'type'
  1224.     prepare to send a file with the specified protocol
  1225.           0    prompt for protocol
  1226.           'A'  ASCII
  1227.           'X'  Xmodem
  1228.           'K'  Xmodem-K
  1229.           'Y'  Ymodem
  1230.           'G'  Ymodem-G
  1231.           'Z'  Zmodem
  1232.           'R'  reduced-speed (medium) Zmodem
  1233.           'S'  slow Zmodem
  1234.     control character versions of any of the above ('^X', '^Y', etc) will
  1235.     delete the file(s) corresponding to the first filespec after sending.
  1236.  
  1237.     See also IF, SENDFILE, RECEIVE, TYPE.
  1238.  
  1239. SENDFILE 'type' "file"
  1240.     send the specified file with the given protocol, which may be any of
  1241.     the ones listed for SEND except 0 or 'A'.  Unlike SEND, this command
  1242.     will not pop up any messages unless it is unable to load the file
  1243.     transfer module; in case of an error, the completion status is set
  1244.     to FAILED.
  1245.  
  1246.     See also RECEIVEFILE, SEND.
  1247.  
  1248. SHELL
  1249.     shell to DOS
  1250.  
  1251.     See also EXEC, IF.
  1252.  
  1253. TEST EXISTS "filespec"
  1254.     determine whether any files matching the filespec exist.  Sets the
  1255.     status to SUCCESS if at least one exists, FAILED if none.  The status
  1256.     may be checked with IF or UNTIL commands.
  1257.  
  1258.     See also TEST WHEN, IF.
  1259.  
  1260. TEST WHEN "str"
  1261.     determine whether a WHEN with the specified search string is currently
  1262.     active.  Sets the status to SUCCESS if at least one exists, FAILED if
  1263.     there are no WHENs with the specified string.  The status may be
  1264.     checked with IF or UNTIL commands.
  1265.  
  1266.     See also IF, WHEN, TEST EXISTS.
  1267.  
  1268. TEXT "msg"
  1269.     send the specified characters out the comm port.  "msg" is limited to
  1270.     253 characters.
  1271.  
  1272. TOGGLE_ECHO
  1273.     toggle the state of local echoing
  1274.  
  1275.     See also ECHO.
  1276.  
  1277. TOGGLE_LOG
  1278.     if logging is currently on, turns off logging received data to file
  1279.     if logging is off, pops up a prompt for the name of the capture file
  1280.  
  1281.     See also OPEN_LOG, CLOSE_LOG.
  1282.  
  1283. TOGGLE_VERBOSE
  1284.     toggle the state of verbose mode (see Alt-Y)
  1285.  
  1286.     See also VERBOSE.
  1287.  
  1288. TRANSLATE_BS ON|OFF
  1289.     TRANSLATE_BS ON turns on backspace/delete swapping, TRANSLATE_BS OFF
  1290.     turns it off.
  1291.  
  1292. TYPE "file"
  1293.     send the specified file to the remote system as a stream of ASCII
  1294.     characters.  Pauses at the end of each line and waits for the carriage
  1295.     return to be echoed (will continue after three seconds even if the
  1296.     echo is not seen).  Equivalent to
  1297.         SEND 'A'
  1298.     if no filename is given.
  1299.  
  1300.     See also SEND.
  1301.  
  1302. UI_MENU
  1303.     pop up the load/save macro menu
  1304.  
  1305.     See also LEARN, LOAD_MACRO, SAVE_MACRO.
  1306.  
  1307. UNTIL SUCCESS|FAILED|CONNECTED|OFFLINE
  1308.     repeatedly executes the following line (or lines if a MULTI) until
  1309.     the status of the last action is either success for UNTIL SUCCESS
  1310.     or failure for UNTIL FAILED.   UNTIL CONNECTED repeatedly executes
  1311.     the following command until carrier detect becomes active, while
  1312.     UNTIL OFFLINE repeats until carrier detect drops.
  1313.  
  1314.     See also ABORT_UNTIL, IF.
  1315.  
  1316. VERBOSE ON|OFF
  1317.     VERBOSE ON turns on verbose mode, VERBOSE OFF turns off verbose mode.
  1318.     (see Alt-Y)
  1319.  
  1320.     See also TOGGLE_VERBOSE.
  1321.  
  1322. VIEW "filename"
  1323.     display the specified file one screenfull at a time.  Pops up a prompt
  1324.     if the null filename is given.
  1325.  
  1326.     Pressing the space bar displays the next screen, Escape exits the
  1327.     file view.
  1328.  
  1329. WAITFOR timeout "wait-string"
  1330.     wait up to timeout seconds for the specified string of characters to
  1331.     arrive over the comm port.  Useful mainly in conjunction with the
  1332.     MULTI command (see below).
  1333.  
  1334.     You may test whether the string was actually received by following
  1335.     the WAITFOR with IF SUCCESS or IF FAILED (unlike versions prior to
  1336.     3.11, a failed WAITFOR does not abort the MULTI it is a part of).
  1337.  
  1338.     See also IF.
  1339.  
  1340. WHEN    iterations "when-string"
  1341.     execute the command on the following line (or lines if it is a MULTI)
  1342.     whenever the "when-string" is encountered in the data stream coming
  1343.     from the remote system.  After the string has been encountered
  1344.     "iterations" times, the WHEN is automatically canceled (if iterations
  1345.     is zero, the WHEN must be explicitly canceled with ENDWHEN).
  1346.     You may have up to six WHENs active at any time (eight if you cancel
  1347.     the autodownload [see ENDWHEN above]).    All WHENs are canceled on
  1348.     hanging up or dialing a number, and autodownload is re-enabled.
  1349.  
  1350.     WHENs are tested in the order in which they were executed, so multiple
  1351.     WHENs with the same when-string will trigger in the order in which
  1352.     they were asserted.
  1353.  
  1354.     This can be an extremely powerful command.  For example, you can
  1355.     implement another autodownloading (or uploading!) protocol simply by
  1356.     adding
  1357.         WHEN 0 "start-string"
  1358.            EXEC "xfer-program parms"
  1359.     to the AUTO or OnLoad macro.  On CompuServe, you can make Ymodem
  1360.     autodownloading by adding
  1361.                 WHEN 0 "initiate YMODEM receive"
  1362.            RECEIVE 'Y'
  1363.         to the OnLoad macro.
  1364.  
  1365.     The built-in Zmodem autodownload corresponds to
  1366.         WHEN 0 "**^XB00"
  1367.            RECEIVE 'Z'
  1368.     while Zmodem auto-upload can be added with
  1369.         WHEN 0 "**^XB01"
  1370.            SEND 'Z'
  1371.  
  1372.     The standard Puma autodownload is equivalent to the lines
  1373.         WHEN 0 "^X^H^XPuma^X^H^X"
  1374.            RECEIVE 'P'
  1375.     [thanks to Matthew Thomas for publishing his autodownload string!].
  1376.  
  1377.     See also DELAYED, ENDWHEN.
  1378.  
  1379. WINDOW    row col width height
  1380.     limit the terminal emulator to a portion of the full screen.
  1381.  
  1382.     WINDOW 0 0 255 255 will restore use of the full screen regardless of
  1383.     the screen size.
  1384.  
  1385. -----------
  1386. Time Limits
  1387. -----------
  1388.  
  1389. The maximal time intervals which may be specified for various commands are:
  1390.     255 ticks (~14 seconds)     PAUSE
  1391.     255 seconds (4.25 minutes)    WAITFOR
  1392.     18 hours (64800 seconds)    DELAYED
  1393.  
  1394. -----------------------------------------------------------------------------
  1395. Terminal Emulation
  1396. ------------------
  1397.  
  1398. RBcomm supports four terminal emulations.  ANSI provides standard ANSI
  1399. escape sequences plus most VT102 and many VT200 escape sequences.  BBS
  1400. is identical to ANSI except that clearing the screen with Esc-[-J or
  1401. Esc-[-2-J also homes the cursor, and character set switching is
  1402. disabled.  AVATAR is identical to BBS except that two of RBcomm's
  1403. private commands are replaced by the AVATAR level 0 command set.
  1404. Finally, VT52 replaces many of the Esc-letter sequences in ANSI with the
  1405. actions a VT52 or H19 would perform.  In addition, in all of these
  1406. modes, RBcomm has its own, much more compact command set.
  1407.  
  1408. ------------------
  1409. Control Characters
  1410. ------------------
  1411.  
  1412. ^A    move cursor up a line (will become ^^ in the next release)
  1413. ^B      move cursor right one position
  1414. ^C      move cursor down a line
  1415. ^D      move cursor left one position, does not wrap to previous line
  1416. ^E    send the answerback string to the remote system
  1417. ^F      special sequences (see below)
  1418. ^G      sound bell, or flash screen if visible bell enabled
  1419. ^H      move cursor left one position, wraps to previous line
  1420. ^I      move to next tab stop
  1421. ^J      move cursor down a line, scrolling screen when at bottom
  1422. ^K      insert a blank line
  1423. ^L      clear screen and home cursor
  1424. ^M      move cursor to start of line
  1425. ^N      "shift out"--switch to G1 character set (VT100)
  1426. ^O      "shift in"--switch to G0 character set (VT100)
  1427. ^P      clear rest of line
  1428. ^R      clear rest of screen
  1429. ^T      change character attribute to underlined
  1430. ^U      clear underlined attribute
  1431. ^V    (BBS) start of an AVATAR command (see below)
  1432.         (other)  change to reverse video
  1433. ^W      cancel reverse video
  1434. ^X      insert a blank at the cursor's position, push rest of line right
  1435. ^Y    (BBS) repeat the following character the number of times specified by
  1436.           the second character after the ^Y
  1437.         (other)  delete character at cursor position, rest of line shifts left
  1438. ^Z      delete line cursor is on
  1439. ^[      escape sequence (see below)
  1440. ^\      turn on insert mode
  1441. ^]      turn off insert mode
  1442. ^^    move cursor up a line
  1443. ^_      the following two characters (less 32) specify the new cursor
  1444.     column and row.  i.e. ^_-blank-blank homes the cursor.
  1445.  
  1446. ----------------
  1447. Escape Sequences
  1448. ----------------
  1449. Esc-blank-F  turn off eight-bit control characters
  1450. Esc-blank-G  turn on eight-bit control characters.  When eight-bit control
  1451.          characters are enabled, many of the characters from 80h through
  1452.          9Fh are equivalent to Esc-<char-40h>.
  1453. Esc-(   (VT100) next character ('0', '1', '2', 'A', or 'B') sets G0 character
  1454.         set
  1455. Esc-)   (VT100) next character ('0', '1', '2', 'A', or 'B') sets G1 character
  1456.         set
  1457. Esc-#   (VT100) next character sets character size
  1458.         only '8' implemented -- fill screen with 'E's for alignment display
  1459. Esc-7   save cursor
  1460. Esc-8   restore cursor
  1461. Esc-<   set terminal emulation to ANSI
  1462. Esc-=    set keypad application mode (if allowed to change NumLock by RBCONFIG)
  1463. Esc->    set keypad numeric mode (if allowed to change NumLock by RBCONFIG)
  1464. Esc-@   turn on insert mode
  1465. Esc-A   move cursor up
  1466. Esc-B   move cursor down
  1467. Esc-C   move cursor right
  1468. Esc-D   (ANSI) "index"--move cursor down, scroll if at bottom
  1469.         (VT52) move cursor left
  1470. Esc-E   (ANSI) move to start of next line, scroll if at bottom
  1471.     (VT52) clear screen
  1472. Esc-F   (ANSI) not implemented
  1473.         (VT52) select graphics character set
  1474. Esc-G   (ANSI) not implemented
  1475.         (VT52) select text character set
  1476. Esc-H   (ANSI) set horizontal tab at current position
  1477.         (VT52) home cursor
  1478. Esc-I   (ANSI) horizontal tab
  1479.     (VT52) reverse linefeed, scrolls down if already on top line
  1480. Esc-J   (ANSI) not implemented
  1481.         (VT52) clear to end of screen
  1482. Esc-K   (ANSI) not implemented
  1483.         (VT52) clear to end of line
  1484. Esc-L   (ANSI) not implemented
  1485.         (VT52) insert a new line at cursor
  1486. Esc-M   (ANSI) "reverse index"--cursor up, reverse scroll if at top
  1487.         (VT52) delete cursor line
  1488. Esc-N   (ANSI) not implemented
  1489.         (VT52) delete char at cursor, rest of line shifts left
  1490. Esc-O   (ANSI) not implemented
  1491.         (VT52) turn off insert mode
  1492. Esc-Y   move cursor, next two characters are row + 32, column + 32
  1493. Esc-Z   request identification
  1494.         (ANSI) RBcomm returns the string "rbcommN.NNx" where N.NN is the
  1495.                version number and "x" is a single byte identifying implemented
  1496.                capabilities
  1497.                    bit 0: screen storing implemented (set)
  1498.                    bit 1: file transfer implemented (set)
  1499.                    bit 6: always set (makes character printable)
  1500.                    remaining bits reserved
  1501.         (VT52) RBcomm returns the string Esc-/-Z, indicating a VT100 emulating
  1502.                a VT52.
  1503. Esc-[   ANSI sequence, see below
  1504. Esc-]    Operating System Command.  The following characters through an Esc-\
  1505.     sequence (maximum 80 characters) are skipped, as this command has
  1506.     no effect.
  1507. Esc-^    ANSI Privacy Message.  The following characters through an Esc-\
  1508.     sequence (maximum 80 characters) are accumulated.  If running under
  1509.     DESQview, the first 40 are displayed in the notification window;
  1510.     otherwise, the accumulated characters are discarded.
  1511. Esc-_    Application Program Command.  The following characters through an
  1512.     Esc-\ sequence (maximum 80 characters) are skipped, as this command
  1513.     has no effect.
  1514. Esc-c   reset to initial state
  1515. Esc-j    save cursor position       (Heath H19)
  1516. Esc-k    restore cursor position    (Heath H19)
  1517. Esc-l    erase line           (Heath H19)
  1518. Esc-p   turn on bold characters
  1519. Esc-q   turn off bold characters
  1520. Esc-v    turn on line wrap       (Heath H19)
  1521. Esc-w    turn off line wrap       (Heath H19)
  1522. Esc-z    reset terminal emulation   (Heath H19)
  1523.  
  1524.  
  1525. --------------
  1526. ANSI Sequences
  1527. --------------
  1528.  
  1529. All of the sequences listed here consist of Esc-[ followed by zero or more
  1530. numbers separated by semicolons followed by the command letter.  Therefore,
  1531. only the command letter will be listed.  X1, X2, etc refer to the specified
  1532. numeric argument, and usually are followed by a default value in parentheses.
  1533. All cursor positioning commands number rows and columns starting at 1.
  1534.  
  1535. @       insert X1 (1) blanks, shifting rest of line to the right
  1536. A       move cursor up X1 (1) lines
  1537. B       move cursor down X1 (1) lines
  1538. C       move cursor right X1 (1) positions
  1539. D       move cursor left X1 (1) positions
  1540. E       move cursor down X1 (1) lines, scroll if at bottom
  1541. F       move cursor up X1 (1) lines, scroll if at top
  1542. G       move cursor to position X1 (1) in current line
  1543. H       move cursor to row X1 (1), column X2 (1)
  1544. I       move to X1st (1) following horizontal tab position
  1545. J    case X1 (*):  0  clear from cursor to end of screen
  1546.                       1  clear from start of screen to cursor
  1547.                       2  clear screen
  1548.         * default is 0 for ANSI and VT52, 2 for ANSI-BBS and AVATAR
  1549. K       case X1 (0):  0  clear from cursor to end of line
  1550.                       1  clear from start of line to cursor
  1551.                       2  clear line
  1552. L       insert X1 (1) lines at cursor
  1553. M       delete X1 (1) lines at cursor
  1554. P       delete X1 (1) characters at cursor, rest of line shifts left
  1555. S       scroll up X1 (1) lines
  1556. T       scroll down X1 (1) lines
  1557. X    erase X1 (1) characters starting at cursor position, cursor stays put
  1558. Z       move cursor to X1st (1) preceding horizontal tab position
  1559. `       move cursor to position X1 (1) in current line
  1560. a       move cursor X1 (0) positions from current position in line
  1561. c    device attribute report
  1562.       responds by sending Esc-[-?-6-c (VT102)
  1563. d       move cursor to line X1
  1564. e       move cursor X1 (0) lines from current line
  1565. f       move cursor to row X1 (1), column X2 (1)
  1566. g    case X1 (0):  0   clear horizontal tab at current position
  1567.               3   clear all horizontal tab stops
  1568.               '>' clear all horizontal tab stops, then set tabs every
  1569.               N positions (i.e.  Esc-[->-5-g sets tabs every five
  1570.               columns)
  1571. h       select mode
  1572.     case X1 (0):  ?2  set emulation to ANSI
  1573.               ?3  select 132-column mode (if enabled by RBCONFIG)
  1574.                4  turn on insert mode
  1575.                       ?5  turn on inverted video
  1576.                       ?6  set top of scrolling region to current line, bottom
  1577.                           to bottom of screen (relative cursor positioning)
  1578.                       ?7  turn on wrap mode
  1579.               12  turn on local echo
  1580.               20  turn on newline mode (send CRLF when CR pressed)
  1581.              ?25  turn cursor on (make visible)
  1582. l       reset mode
  1583.         case X1 (0):  ?2  set emulation to VT52
  1584.                       ?3  select 80-column mode
  1585.                4  turn off insert mode
  1586.                       ?5  turn off inverted video
  1587.                       ?6  set top of scrolling region to topmost line, bottom
  1588.                           to bottom of screen (absolute cursor positioning)
  1589.                       ?7  turn off wrap mode
  1590.               12  turn off local echo
  1591.               20  turn off newline mode (send only CR when CR pressed)
  1592.              ?25  turn off cursor (make invisible)
  1593.               Note: may not work on all systems or in all video
  1594.               modes
  1595. m       select graphic rendition
  1596.         for each Xn in order,
  1597.                       0  reset attributes to white on black, turn off reverse
  1598.                          video
  1599.                       1  set bold
  1600.                       4  set underlined
  1601.                       5  set blinking
  1602.                       7  set reverse video
  1603.                       8  set invisible (black on black)
  1604.                      21  turn off bold
  1605.              22  turn off bold
  1606.                      24  turn off underlined
  1607.                      25  turn off blinking
  1608.                      27  turn off reverse video
  1609.              30  set foreground color
  1610.                       -
  1611.                        37
  1612.              40  set background color
  1613.                       -
  1614.                        47
  1615.         Note: Esc-[-m is equivalent to Esc-[-0-m
  1616. n       device status report
  1617.     case X1 (0):  5  report terminal status
  1618.              always sends Esc-[-0-n (terminal OK) to remote
  1619.               6  report cursor position
  1620.                          sends string Esc-[-row-;-col-R to remote system
  1621.              15  printer status
  1622.              sends Esc-[-?-1-3-n (no printer) if no printer defined
  1623.                    Esc-[-?-1-0-n if printer is ready
  1624.                    Esc-[-?-1-1-n if printer is not ready
  1625.                  [currently always sends ?13n]
  1626.                      25  report User Definable Key status
  1627.              always sends Esc-[-?-21-n (UDK's locked)
  1628.              26  report keyboard dialect
  1629.              always sends Esc-[-?-27-;-1-n (US ASCII)
  1630. r       set scrolling region to rows X1 (1) through X2 (lines-on-screen)
  1631. s       save cursor (may not be nested)
  1632. u       restore cursor
  1633. x    request terminal parameters (VT100)
  1634.     case X1 (0):  0  sends back string indicating bits, parity, speed
  1635.               1  sends back string indicating bits, parity, speed
  1636.     the string sent is
  1637.        Esc-[-<id>-;-<parity>-;-<bits>-;-<tspd>-;-<rspd>-;1;0x
  1638.     where <id> is 2 if X1 was 0 and 3 if X1 was 1
  1639.           <parity> is 1 for none, 2 for space, 3 for mark, 4 for odd,
  1640.               and 5 for even
  1641.           <bits> is 1 for 8, 2 for 7, 3 for 6, and 4 for 5 data bits
  1642.           <tspd> and <rspd> are the transmit and receive speeds:
  1643.              16 -> 110 bps
  1644.              32 -> 150 bps
  1645.              48 -> 300 bps
  1646.              56 -> 600 bps
  1647.              64 -> 1200 bps
  1648.              88 -> 2400 bps
  1649.             104 -> 4800 bps
  1650.             112 -> 9600 bps
  1651.             120 -> 19200 bps
  1652.             128 -> 38400 bps
  1653.             136 -> 57600 bps
  1654. z    reset terminal emulation (Heath H19)
  1655. blank    extended ANSI sequence
  1656.  
  1657. -----------------------
  1658. Extended ANSI sequences
  1659. -----------------------
  1660.  
  1661. If the command character for an ANSI sequence is a blank, the NEXT character
  1662. specifies the actual operation.
  1663.  
  1664. @       scroll left X1 (1) columns
  1665. A       scroll right X1 (1) columns
  1666.  
  1667. ------------------------
  1668. Special RBcomm sequences
  1669. ------------------------
  1670.  
  1671. When RBcomm receives a ^F, the following character specifies the actual
  1672. command.
  1673.  
  1674. ^x      display the IBM PC screen character corresponding to the control
  1675.         character
  1676. 0       turn off visual bell, ^G will beep
  1677. 1       turn on visual bell, ^G will flash the screen, but internally
  1678.         generated beeps still sound
  1679. 2       flash the screen
  1680. 3    beep even if visual bell turned on
  1681. 4       fill area.  Identical to AVATAR ^V^M (see below)
  1682. 5    repeat character.  Identical to AVATAR ^Y (see above)
  1683. 6    repeat pattern.  Identical to AVATAR ^V^Y (see below)
  1684. ;    set terminal emulation to UW (not yet implemented).  Does not affect
  1685.       any other settings.
  1686. <    set terminal emulation to VT102/ANSI.  Does not affect any other
  1687.       settings
  1688. =    set terminal emulation to ANSI-BBS.  Does not affect any other
  1689.       settings.
  1690. >    set terminal emulation to VT52.  Does not affect any other settings.
  1691. ?    query terminal emulation type.    Sends back <127><type> where type is
  1692.       'A' for VT102/ANSI, 'B' for ANSI-BBS, 'V' for VT52, and 'U' for
  1693.       UW.
  1694. @       send identification (see Esc-Z)
  1695. A    if next character is '0' through '7', save the current screen in the
  1696.         specified slot.  This may silently fail if there is not enough memory
  1697.         available (thus the remote system must be capable of redrawing the
  1698.     screen itself).  For technically minded:  Screens are first stored in
  1699.     the near heap, then in the far heap (to store all ten screen requires
  1700.     a memory partition of about 85K using 80x25 screens, more if the screens
  1701.     are larger).  Any screens in the far heap are lost when swapping, such
  1702.     as running DSZ or shelling to DOS.  Using a 65K partition will allow
  1703.         you to store four or five screens in the near heap, none in the far
  1704.     heap.
  1705.     Note: this command will change in the next release
  1706. B    if next character is '0' through '7', restore the screen from the
  1707.         specified slot where a screen should have been previously saved with
  1708.         ^FA.  If no screen has been saved in the slot, command fails.  Sends
  1709.         a response of 127-<digit>-<status> to the remote system, where the
  1710.         digit is the slot number from the ^FB command, and status is 'Y' if
  1711.         the screen was restored or 'N' if the screen remains unchanged.
  1712.     Note: this command will change in the next release
  1713. C    if next character is '0' through '7', free the specified slot, so that
  1714.         it is as if no screen had ever been saved there.
  1715.     Note: this command will change in the next release
  1716.  
  1717. ------------------------
  1718. AVATAR command sequences
  1719. ------------------------
  1720.  
  1721. ^V^A    set screen attribute to low seven bits of following character
  1722. ^V^B    set blink
  1723. ^V^C    move cursor up a line
  1724. ^V^D    move cursor down a line
  1725. ^V^E    move cursor left one space
  1726. ^V^F    move cursor right one space
  1727. ^V^G    clear from cursor to end of line
  1728. ^V^H<r><c>  move cursor to row <r> and column <c>, where the upper left corner
  1729.             is 1,1
  1730. ^V^I    turn on insert mode until next AVATAR command (except ^Y and ^V^Y)
  1731. ^V^J    scroll area up.  Next five characters specify number of lines to
  1732.         scroll, top margin, left margin, bottom margin, and right margin (all
  1733.         margins are based on 1,1 being the upper left corner of the screen)
  1734. ^V^K    scroll area down.  Next five characters are as for ^V^J
  1735. ^V^L    clear area.  Next three characters specify screen attribute for cleared
  1736.         area, number of lines less one, and number of columns less one.  The
  1737.         blink bit of the attribute is ignored, and the current display attribute
  1738.         is set to the attribute of the cleared area.
  1739. ^V^M    fill area.  Next four characters specify screen attribute for filled
  1740.         area, character to fill with, number of lines less one, and number of
  1741.         columns less one.  The current display attribute is set to the filled
  1742.         attribute with blinking turned off.
  1743. ^V^N    delete character at cursor position
  1744. ^V^Y    repeat pattern.  The following character specifies the length of the
  1745.         pattern to be repeated, followed by the pattern, and finally followed
  1746.         by a single character indicating the number of times to repeat the
  1747.     pattern.  The pattern may contain command sequences, but is limited
  1748.     to 80 characters (longer patterns are truncated to 80 characters).
  1749.  
  1750. -----------------------------------------------------------------------------
  1751. Acknowledgements
  1752. ----------------
  1753.  
  1754. Thanks to Thomas Zerucha for his numerous comments and suggestions, many of
  1755. which have been implemented.
  1756.  
  1757. Thanks to Walter Cox for his comments and suggestions on v2.81, one of the
  1758. included keyboard bindings, and his patience in testing new versions.
  1759.  
  1760. Thanks to Mike Weaver for his comments and suggestions, some of which have
  1761. been implemented.
  1762.  
  1763. Thanks to Dave Doren for banging on the macro language and reporting bugs
  1764. and possible enhancements.
  1765.  
  1766. -----------------------------------------------------------------------------
  1767. Program History
  1768. ---------------
  1769.  
  1770. v2.72  9/3/89   first public release
  1771. v2.81  10/4/89    second public release
  1772. v3.01  1/6/90    third public release
  1773. v3.02  1/14/90    minor bugfixes, some H19 extensions added
  1774.         input line editor now blinks control characters rather than
  1775.           using ^X notation, ^BS acts as BS, Alt-D inserts ASCII 127
  1776.         made existing functions available as new macro commands
  1777.           FDELETE, AWAITKEY, KFLUSH, and ABORT.
  1778. v3.03  1/20/90    removed key-reassignment under Alt-M, saving over 300 bytes
  1779.         added VERBOSE, ECHO, and TRANSLATE_BS macro commands
  1780.         added answerback message
  1781. v3.04  2/2/90    changed macro file format to allow larger macros
  1782.         added #include macro file inclusion command
  1783.         added MESSAGEBOX, LOWER_DTR and ANSWERBACK macro commands.
  1784. v3.05  2/10/90    changed macro file again to allow control key reassignment
  1785.                 added ANSI Privacy Message (Esc-^) command
  1786. v3.06  2/25/90    made existing function CANCEL_NOTIFY available as macro command
  1787.         maximum delay time now 3600 seconds
  1788. v3.10  3/10/90    added VIEW macro command, bound to Alt-V (old Alt-V now Alt-Y)
  1789.         added support for multiple comm ports without reconfiguring
  1790.         added %I in EXEC command-tail
  1791. v3.11  3/31/90    added IF, UNTIL, ABORT_UNTIL macros
  1792.                 improved handling of multiple comm ports
  1793.         added #ignore to macro compiler
  1794.         fixed minor bug in disk-swapping code
  1795. v3.12  4/21/90    made SENDFILE and RECEIVEFILE available as macro commands
  1796.         fixed origin-mode & scrolling-region bugs in terminal emulator
  1797.                 added %a and %i in EXEC command-tail
  1798.         added seamless Puma file transfers
  1799.        4/28/90    (fourth public release)
  1800. v3.13  6/23/90    macro compiler bugfixes (e.g. IF CONNECTED/OFFLINE now work)
  1801.         manual dial before directory dial now uses proper port
  1802.         added IF DV and IF NOT DV commands
  1803.         (limited release)
  1804. v3.14  6/30/90    added WINDOW, FORCE_CLEANUP, and HANGUP_ONLY commands
  1805.         now able to reconnect without dropping carrier
  1806.         added %V, %d, %t variable expansions
  1807.         OPEN_LOG now expands variables
  1808.         time limit on DELAYED raised to 18 hours
  1809.         (limited release)
  1810. v3.15  7/7/90    added AT, LOG, and EXECN commands
  1811.         internal changes
  1812.         (limited release)
  1813. v3.16  7/14/90    made Puma autodownload present by default
  1814.         added RBCDIAL environment variable
  1815.         added REPEAT, CUT and PASTE macro commands
  1816.         added OnAbort and Null pseudokeys
  1817.         (limited release)
  1818. v3.20  7/22/90    internal changes
  1819.         added TEST WHEN/TEST EXISTS/RFLUSH/GOTO_KEY commands
  1820.                 CUT now sets SUCCESS/FAILED
  1821.         (limited release)
  1822. v3.21  7/29/90    fixed problems with GOTO_KEY
  1823.         (fifth public release)
  1824.